package com.anfeng.cms.service.emp;

import com.anfeng.cms.domain.emp.AfEmployeeInfo;
import com.anfeng.cms.request.emp.EmployeeInfoReq;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 吴朋
 * @since 2019-07-15
 */
public interface IAfEmployeeInfoService extends IService<AfEmployeeInfo> {

    /**
     * 新增员工信息
     * @param employeeInfo 员工信息
     * @return 员工信息
     */
    String addEmployee(AfEmployeeInfo employeeInfo);

    /**
     * 更新员工信息
     * @param employeeInfo 员工信息
     * @return 更新状态 -1 失败  1 成功
     */
    int updateEmployeeInfo(AfEmployeeInfo employeeInfo);

    /**
     * 根据查询参数获取所有的员工信息
     * @param reqInfo 查询参数
     * @return 员工信息
     */
    List<AfEmployeeInfo> getAllEmployeeInfo(EmployeeInfoReq reqInfo);

    /**
     * 根据查询条件获取员工总数
     * @param reqInfo 查询条件
     * @return 查询数量
     */
    int getEmployeeInfoCounts(EmployeeInfoReq reqInfo);

    /**
     * 根据查询条件分页获取员工信息
     * @param reqInfo 查询参数
     * @param page 当前页
     * @param pageSize 每页数量
     * @return 员工信息
     */
    List<AfEmployeeInfo> getEmployeeInfosByPage(EmployeeInfoReq reqInfo, Integer page, Integer pageSize);

    /**
     * 根据员工编号 手机号 证件号 查询员工信息 主要是为了验证相关信息是否有员工存在  验证信息唯一性
     * @param empNo 员工编号
     * @param mobile 手机号
     * @param identityNo 证件号
     * @return 员工信息
     */
    List<AfEmployeeInfo> getEmployeeInfo(String empNo, String mobile, String identityNo);

    /**
     * 调整员工部门信息
     * @param empId 员工id
     * @param changeDeptId 新部门id
     * @return 调整结果是否成功 -1 失败 1 成功
     */
    int changeEmployeeDepartmentInfo(String empId, String changeDeptId);

    /**
     * 根据员工证件号 获取用户信息
     * @param identityNo 证件号
     * @return 员工信息
     */
    AfEmployeeInfo getEmployeeInfoByIdentityNo(String identityNo);

    /**
     * 根据员工编号 获取用户信息
     * @param empNo 员工编号
     * @return 员工信息
     */
    AfEmployeeInfo getEmployeeInfoByEmpNo(String empNo);

    /**
     * 根据部门id 获取部门下员工的数量
     * @param deptId 部门id
     * @return 员工数量
     */
    int getDepartmentEmployeeCount(String deptId);

    /**
     * 根据部门获取部门下的员工信息
     * @param deptId 部门id
     * @return 员工信息
     */
    List<AfEmployeeInfo> getDepartmentEmployee(String deptId);
}
